package com.ocl.www.controller;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.ocl.www.service.ArticleService;
import com.ocl.www.utils.OutServerUntils;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.ocl.www.domain.Article;

@RestController
@RequestMapping("/solrArticleController")
public class SolrarticleController {
	
	@Autowired
	private HttpSolrClient solrClient;

    @Autowired
    private ArticleService articleService;



	@ResponseBody
	@RequestMapping(value="/queryDocs", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
	public List<Article> queryDocs(@RequestBody String solrdata) {


        //远程调用接口返回值data
        String targetURL = "http://192.168.1.39:8012/ocl-search-server/solrArticleController/queryDocsTest";
        String input = "{\"solrdata\":\""+solrdata+"\"}";
        String data = OutServerUntils.callInterface(targetURL,input,"","application/json");

        //处理
        List<Object> objectList = JSONArray.fromObject(JSONObject.fromObject(data).get("listarti"));
        System.out.println(objectList);

        List<Integer>  articleids = new ArrayList<Integer>();
        List<Article>  articleList = new ArrayList<Article>();
        for (int i = 0;i < objectList.size();i++){
            articleids.add((Integer) JSONObject.fromObject(objectList.get(i)).get("article_id"));
        }
        try {
            if (articleids.size()==0){return null;}

            articleList = articleService.selectArticleList(articleids);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return articleList;
//		//System.out.println("jr");
//        SolrQuery query = new SolrQuery();
//        //ik中文分词器无法使用单个字符作为查询条件，必须两字以上，否则查出来的信息为空
////        query.setQuery("title:人民");
//        query.setQuery("articlecontent:"+solrdata+" OR title:"+solrdata+" OR tagcontent:"+solrdata);
////        query.setQuery("articlecontent:中国 AND title:广州");
////        query.setFilterQueries("articlecontent:21");
//        QueryResponse response = null;
//        SolrDocumentList docs = new SolrDocumentList();
//        List<Article> listarti = new ArrayList<Article>();
//        List<Integer>  articleids = new ArrayList<Integer>();
//        try {
//            response = solrClient.query(query);
//            System.out.println(response.toString());
//            System.out.println();
//            docs = response.getResults();
//            System.out.println(response.getResults().size());
//            System.out.println("文档个数：" + docs.getNumFound());
//            System.out.println("查询时间：" + response.getQTime());
//            for (SolrDocument doc : docs) {
//                System.out.println("articleid: " + doc.getFieldValue("articleid"));
////                Article ac = new Article();
////                ac.setTitle(doc.getFieldValue("title").toString());
////                ac.setArticlecontent(doc.getFieldValue("articlecontent").toString());
////                ac.setArticleId(Integer.valueOf(doc.getFieldValue("articleid").toString()));
//                articleids.add(Integer.valueOf(doc.getFieldValue("articleid").toString()));
////                listarti.add(ac);
//            }
//
//            try {
//                if (articleids.size()==0){
//                    return listarti;
//
//                }
//                listarti = articleService.selectArticleList(articleids);
//
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//
//
//        } catch (SolrServerException e) {
//            e.printStackTrace();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return listarti;
        
    }
	
//	@RequestMapping(value="/queryArticleinfo", method=RequestMethod.GET)
//	public void queryArticleinfo() throws Exception {
//		try {
//            List<Article> list = new ArrayList<Article>();
//            
//            Article art = new Article();
//            art.setTitle("321321321");
//            art.setAuthor(852);
//            list.add(art);
//            
//            Article art1 = new Article();
//            art1.setTitle("987987987");
//            art1.setAuthor(741);
//            list.add(art1);
//			
//            solrClient.addBeans(list);
//            solrClient.commit();
//         } catch (SolrServerException e) {
//             e.printStackTrace();
//         } catch (IOException e) {
//             e.printStackTrace();
//	     }
////        testQueryAll() ;
//	}
//	
//	
//	public void testQueryAll() {
//        SolrQuery params = new SolrQuery();
//        
//        // 查询关键词，*:*代表所有属性、所有值，即所有index
//        params.setQuery("userName:2");
//        params.setQuery("nickName:cd");
//        
//        // 分页，start=0就是从0开始，rows=5当前返回5条记录，第二页就是变化start这个值为5就可以了。
//        params.set("start", 0);
//        params.set("rows", Integer.MAX_VALUE);
//            
//        // 排序，如果按照id排序，那么将score desc 改成 id desc(or asc)
//         params.set("sort", "score desc");
//        params.set("sort", "id asc");
//        
//        // 返回信息*为全部，这里是全部加上score，如果不加下面就不能使用score
//        params.set("fl", "*,score");
//        
//        
//        QueryResponse response = null;
//        try {
//            response = solrClient.query(params);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        
//        if(response!=null){
//            System.out.println("Search Results: ");
//            SolrDocumentList list = response.getResults();
//            for (int i = 0; i < list.size(); i++) {
//                System.out.println(list.get(i));
//            }
//        }
//    }
//     
//
//		
}
